Virtual appliances (also referred to as “virtual machine images” or “virtual images”) are emerging as a new vehicle for software packaging and distribution. Virtual appliances allow the tested state of a fully operational software stack to be captured and distributed, instead of a collection of install packages with complicated install and configuration instructions that the customer has to carefully follow to achieve the same result.
Virtual appliance marketplaces are emerging that enable software publishers to sell their products as pre-configured virtual appliances (see, for example, the VMWare Virtual Appliance Marketplace. In addition, emerging “compute clouds” provide virtual appliance libraries where users and software publishers can add virtual images that may then be used by other cloud users, potentially for a fee (see, for example, the Amazon Elastic Compute Cloud, available at http://aws.amazon.com/ec2/). New Enterprise products are also being developed that contain an internal virtual appliance library pre-populated with virtual images created by the product vendor (see, for example, Websphere Cloudburst Appliance, commercially available from IBM Corporation).
An obstacle to the widespread adoption of virtual appliances as software distribution vehicles is that virtual appliances typically consist of a complete software stack, where the publisher of the image may only own a component of that stack. The component owned by the publisher is typically dependent on other components owned by different organizations. In a conventional software distribution model, the publisher would provide only their own component (for example, as an install package), and document the prerequisite components that the customer has to acquire, install and configure to create the final software stack where the publisher's component is operational.
In a virtual image, however, the publisher does the integration of the full stack, as opposed to the customer. Thus, the publisher becomes an implicit re-distributor of all of the other software components required to create the virtual image. In addition, “open source” components do not fix this problem. For example, if a publisher uses Open SUSE Linux as the operating system (OS) component in a virtual image, the customer of that image must still accept the Open SUSE license agreement. This license, however, is for the original Open SUSE distribution, which may have been modified in the process of creating the publisher's virtual image. The customer may want to know exactly what parts of the original Open SUSE distribution were modified by the software publisher in creating the integrated virtual image.
A need therefore exists for improved methods and apparatus for distributing a composite software stack as a virtual appliance. A further need exists for improved methods and apparatus for distributing a virtual appliance, without becoming a re-distributor of all components of the software stack.